Frame buffer sizing to optimize the performance of on screen graphics in a digital electronic device

ABSTRACT

In the instant invention an improved method and device is described for utilizing the frame buffer of and electronic device with a display. The frame buffer is enlarged well beyond the dimensions of the display and the user is unable to change which region of the frame buffer is visible on the display. An application of the electronic device is allocated a region for its exclusive use that is within the portion of the frame buffer which is not visible to the user, and draws into it. The application may also take full advantage of accelerated drawing operations offered by the GPU. Compositing may be done by the application or by a window manager between regions of the enlarged frame buffer, visible on-screen, the portion off-screen, or any combination.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. Provisional Patent Application 61/396,789 filed Jun. 1, 2010, entitled “Electronic Device for Education”, the contents of which are incorporated herein by reference.

FIELD OF THE INVENTION

The invention relates to generally to electronic devices. More particularly, the invention relates to methods and devices for manipulating the frame buffer.

BACKGROUND OF THE INVENTION

Devices with a graphical user interface increasingly use a Graphical Processing Unit (GPU) in addition to a CPU. The GPU is responsible for maintaining the image shown to the user, i.e. refreshing the display, and improving the performance of updating that image, i.e. accelerating drawing operations. It is common for the GPU to have dedicated memory set aside for its use. Since it accesses memory intensely, were this not done, competition for access to memory would decrease the performance of both the CPU and GPU.

This separation between CPU and GPU memory brings other challenges, however. It is commonplace to have constraints on how one unit can access the other's memory. For example, the CPU typically does not have direct access to the GPU memory, and vice-versa. Even if direct access is possible, performance is poor due to the contention issue described above. Thus, the approach used by an application to render images, through the compositing of the output of multiple applications onto one (or more) displays, is one that is critical to user experience, yet difficult to do efficiently and with high performance.

SUMMARY OF THE INVENTION

In one embodiment of the invention, the frame buffer is enlarged well beyond the dimensions of the display and the user is unable to change which region of the frame buffer is visible on the display. An application is allocated a region for its exclusive use that is within the portion of the frame buffer which is not visible to the user, and draws into it. The application may also take full advantage of accelerated drawing operations offered by the GPU. Compositing may be done by the application or by a window manager between regions of the enlarged frame buffer, visible on-screen, the portion off-screen, or any combination.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a frame buffer in accordance with the instant invention.

DETAILED DESCRIPTION OF THE INVENTION

This invention helps overcome the described difficulties by utilizing an on screen window outside of the display area.

A frame buffer is a region of memory specially formatted for the GPU to scan in order to send the image to a display device. This is typically done repeatedly, many times a second, as the majority of display technologies in common use today must be constantly refreshed in order to display the image. It is common to have an application render its visual representation into an off-screen buffer in the CPU memory, which will be copied into GPU memory later. It is also common to combine multiple off-screen images through drawing operations that overlap and merge them (e.g. through the use of transparency). This processing is termed compositing.

It is also customary to hold graphical components in GPU memory (e.g. textures, geometry), that will be later combined to display a visual image (e.g. a 3D scene). These graphical elements are not in a form that can be visualized directly—they are components from which a visual image can be built through additional processing. It is also typical to have more than one frame buffer, so one can be updated while the other is being scanned, so that the display does not show a partially-updated image (typically known as double or triple buffering).

It is not customary to have a frame buffer whose dimensions do not match that of the display. When that is the case, the portion that is visible to the user may be translated within the larger display, so while the entire frame buffer may not all be visible to the user simultaneously, the user can direct the device to show any portion under his or her control.

In the instant invention, the frame buffer is enlarged well beyond the dimensions of the display and the user is unable to change which region of the frame buffer is visible on the display. As shown in FIG. 1, the frame buffer (1) is larger than the region visible to the user (2). An application is allocated a region for its exclusive use (3) or (4) that is within the portion of the frame buffer which is not visible to the user, and draws into it (akin to an ‘off-screen buffer’, but in the GPU memory). The application may also take full advantage of accelerated drawing operations offered by the GPU. Compositing may be done by the application or by a window manager (or similar software component) between regions of the enlarged frame buffer, visible on-screen, the portion off-screen, or any combination.

In the preferred embodiment, a device may have a display with a resolution of 800 pixels by 600 pixels. Normal practice is for the frame buffer to have the same dimensions. In this embodiment of the invention, the frame buffer is enlarged to 2400×600. The region from 0,0 to 799,599 may be assigned to be visible, and be used directly by the GPU to refresh the display. One application might be allocated 800,0 to 999,149, and draw its representation in that 200×150 pixel region. Another might be allocated 800,150 to 1200,599, and draw its representation within that 400×450 pixel region. A compositing window manager can combine those images by copying them into the visible region at 0,0 to 799,599, perhaps overlapping them, and using transparency during the copy so that one may be seen partially through the other, where they overlap.

Arbitrary regions of the invisible portions may be allocated to applications, either statically or dynamically, and possibly altered or re-allocated as the application's needs change. This technique may also apply to systems with multiple frame buffers, which may be the same or different sizes. Frame buffers that currently have no portion visible to the user may be considered entirely invisible, and their entire dimensions used in the fashion described above. Or the area that would be visible if the frame buffer were made primary could be reserved and not allocated for off-screen use.

Optionally, a potentially more efficient path can be used. For example, instead of copying directly from the onscreen window, the pixel data can be copied from the window's back buffer. The pixel data is then blitted to the screen from the off-screen buffer in whatever manner is defined by the rendering pipeline. 

1. A method for use on a display device comprising: generating a frame buffer larger than the visible area of the display device; redirecting the contents of an on screen window to an area of the frame buffer outside of the visible area; compositing contents of the frame buffer, including at least some portion of the frame buffer outside the visible area; and updating the contents of the visible portion of the frame buffer based on the compositing.
 2. A computer readable medium capable of storing a program facilitating the following steps: generating a frame buffer larger than the visible area of the display device; redirecting the contents of an on screen window to an area of the frame buffer outside of the visible area; compositing contents of the frame buffer, including at least some portion of the frame buffer outside the visible area; and updating the contents of the visible portion of the frame buffer based on the compositing. 